SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[pje_porBecas] @idinscripcion integer,@puntaje float output,@resultado as integer output   AS

set nocount on --para anular el trafico econ el cliente (no salen los print)

declare @topebecas as  integer
declare @sum as float
DECLARE @Error INT
declare  @idAgente as int,@CargoGenerico as int,@AsignaturaGenerica as int, @idTipoConvocatoria as int ,@fechaLimite as datetime
declare @nivel_insc as int,@ciclo as int,@grupoincumbencia as int,@grupoincumbencia2 as int


BEGIN TRANSACTION
SET @ERROR=0


select @topebecas =(select isnull(valor,9999) from tb_topetiposantecedentes where rubro=2 and TipoAntecedente =86 )-- leo el  tope por becas

select  @idAgente=i.Agente,@cargoGenerico = i.CargoGenerico,@AsignaturaGenerica=i.AsignaturaGenerica,@idtipoConvocatoria=Conv.TipoConvocatoria,@FechaLimite=Conv.FechaLimite,@nivel_insc = i.nivel,@ciclo=ciclo
	from 
	tb_inscripcionesConvocatorias i 
		join tb_Convocatorias conv on i.Convocatoria=conv.idConvocatoria 
	where i.idInscripcionConvocatoria=@idInscripcion


if @nivel_insc = 3 and @ciclo = 2 set  @nivel_insc=4

select @grupoIncumbencia=case
	when @nivel_insc = 2 then 572
	when @nivel_insc = 3 then 573
	when @nivel_insc = 4 then 571
end

select @grupoIncumbencia2=case
	when @nivel_insc = 2 then 570
	when @nivel_insc = 3 then 570
	when @nivel_insc = 4 then 571
end

if  @idTipoConvocatoria in (1,2,3,4,5,9) --    TipoConvocatoria = 1 ingreso,interinatos y suplencias 
begin
	
declare c cursor FORWARD_ONLY FOR select 
		  isnull (sum(PuntajeParaIncumbencias),0)  puntaje 
	from tb_antecedentes a 
		join tb_tiposAntecedentes t on a.tipo=t.idtipoantecedente 
		join tb_gruposDeIncumbencias G on G.idGrupoIncumbencia=a.GrupoIncumbencias
--		join tb_reluniongsgu R on r.idgrupounion = G.idGrupoIncumbencia
		join tb_incumbencias h on G.idGrupoINCUMBENCIA=h.grupoIncumbencia
    	         where a.rubro=2  and agente=@idagente and h.CargoGenerico=@Cargogenerico and h.AsignaturaGenerica=@AsignaturaGenerica and a.FechaPresentacion <= @FechaLimite--sumo todos los artículos que tiene el agente
and (G.IDgrupoIncumbencia= @grupoIncumbencia or G.IDgrupoIncumbencia= @grupoIncumbencia2 or a.grupoincumbencias =99)
--	union
--	select  
--	  	isnull (sum(PuntajeParaIncumbencias),0) puntaje
--	from tb_antecedentes a 
--		join tb_tiposAntecedentes t on a.tipo=t.idtipoantecedente 
 --                        where a.rubro=2  and agente=@idagente and a.grupoincumbencias =99 --sumo todos los artículos que tiene el agente

	SET @Error = @@ERROR 
	IF @Error <> 0 GOTO Salir

	open c

	fetch next from c into @sum

	set @puntaje=0

	while @@FETCH_STATUS = 0

	begin
		set @puntaje=@puntaje+@sum
		fetch next from c into @sum
	end

	close c
	deallocate c

	if  @puntaje > @topebecas set @puntaje = @topebecas 

end

print @puntaje

Salir:
IF @Error <> 0 
	ROLLBACK TRANSACTION
ELSE 
	COMMIT TRANSACTION
GO
GRANT EXECUTE ON  [dbo].[pje_porBecas] TO [Juntas]
GO
